home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE09 / SAFELIST / MAINFORM.PAS < prev    next >
Pascal/Delphi Source File  |  1996-03-20  |  2KB  |  91 lines

  1. unit Mainform;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, ExtCtrls, Shapes;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Label1: TLabel;
  12.     ShapeRadioGroup: TRadioGroup;
  13.     SizeEdit: TEdit;
  14.     PaintBox: TPaintBox;
  15.     AddBtn: TButton;
  16.     Label2: TLabel;
  17.     TopEdit: TEdit;
  18.     Label3: TLabel;
  19.     ColourComboBox: TComboBox;
  20.     Left: TLabel;
  21.     LeftEdit: TEdit;
  22.     procedure AddBtnClick(Sender: TObject);
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure FormDestroy(Sender: TObject);
  25.     procedure FormPaint(Sender: TObject);
  26.   private
  27.     ShapeList : TShapeList;
  28.   end;
  29.  
  30.  
  31. var
  32.   Form1: TForm1;
  33.  
  34.  
  35. implementation
  36.  
  37. {$R *.DFM}
  38.  
  39. procedure TForm1.FormCreate(Sender: TObject);
  40. begin
  41.   {Ensure a colour is selected}
  42.   ColourComboBox.ItemIndex := 0;
  43.   {Create the list that will hold all the shapes to draw}
  44.   ShapeList := TShapeList.Create;
  45. end;
  46.  
  47.  
  48. procedure TForm1.FormDestroy(Sender: TObject);
  49.   var
  50.     i : Integer;
  51. begin
  52.   {Free the list and all the shapes it contains, because Free calls Destroy if
  53.    ShapeList was successfully created, and TShapeList.Destroy now cleans up
  54.    after itself.}
  55.   ShapeList.Free;
  56. end;
  57.  
  58.  
  59. procedure TForm1.FormPaint(Sender: TObject);
  60. begin
  61.   {Redraw all the shapes}
  62.   ShapeList.DrawAllShapes(PaintBox.Canvas);
  63. end;
  64.  
  65.  
  66. procedure TForm1.AddBtnClick(Sender: TObject);
  67.   const
  68.     Colours : array[0..2] of TColor = (clRed,clGreen,clBlue);
  69.   var
  70.     NewShape : TMyShape;
  71. begin
  72.   {Create a new shape object based on the radio button selection}
  73.   case ShapeRadioGroup.ItemIndex of
  74.     0 : NewShape := TCircle.Create;
  75.     1 : NewShape := TSquare.Create;
  76.   end;
  77.  
  78.   {Set the properties of the new shape}
  79.   NewShape.Size   := StrToInt(SizeEdit.Text);
  80.   NewShape.Top    := StrToInt(TopEdit.Text);
  81.   NewShape.Left   := StrToInt(LeftEdit.Text);
  82.   NewShape.Colour := Colours[ColourComboBox.ItemIndex];
  83.   {Add the shape to the list of shapes}
  84.   ShapeList.Add(NewShape);
  85.   {Redraw everything in the list, as the new shape may cover old ones}
  86.   ShapeList.DrawAllShapes(PaintBox.Canvas);
  87. end;
  88.  
  89.  
  90. end.
  91.